/***** Copyright (c) 1999 Object Management Group. Unlimited rights to 
       duplicate and use this code are hereby granted provided that this 
       copyright notice is included.
 *****/

package org.omg.CORBA.portable;

public abstract class Delegate {

	/**
	 * @deprecated Deprecated by CORBA 2.3
	 */
	public abstract org.omg.CORBA.InterfaceDef get_interface(
			org.omg.CORBA.Object self);

	public org.omg.CORBA.Object get_interface_def(org.omg.CORBA.Object self) {
		throw new org.omg.CORBA.NO_IMPLEMENT();
	}

	public abstract org.omg.CORBA.Object duplicate(org.omg.CORBA.Object self);

	public abstract void release(org.omg.CORBA.Object self);

	public abstract boolean is_a(org.omg.CORBA.Object self, String repository_id);

	public abstract boolean non_existent(org.omg.CORBA.Object self);

	public abstract boolean is_equivalent(org.omg.CORBA.Object self,
			org.omg.CORBA.Object rhs);

	public abstract int hash(org.omg.CORBA.Object self, int max);

	public abstract org.omg.CORBA.Request create_request(
			org.omg.CORBA.Object self, org.omg.CORBA.Context ctx,
			String operation, org.omg.CORBA.NVList arg_list,
			org.omg.CORBA.NamedValue result);

	public abstract org.omg.CORBA.Request create_request(
			org.omg.CORBA.Object self, org.omg.CORBA.Context ctx,
			String operation, org.omg.CORBA.NVList arg_list,
			org.omg.CORBA.NamedValue result,
			org.omg.CORBA.ExceptionList exclist,
			org.omg.CORBA.ContextList ctxlist);

	public abstract org.omg.CORBA.Request request(org.omg.CORBA.Object self,
			String operation);

	public org.omg.CORBA.portable.OutputStream request(
			org.omg.CORBA.Object self, String operation,
			boolean responseExpected) {
		throw new org.omg.CORBA.NO_IMPLEMENT();
	}

	public org.omg.CORBA.portable.InputStream invoke(org.omg.CORBA.Object self,
			org.omg.CORBA.portable.OutputStream os)
			throws ApplicationException, RemarshalException {
		throw new org.omg.CORBA.NO_IMPLEMENT();
	}

	public void releaseReply(org.omg.CORBA.Object self,
			org.omg.CORBA.portable.InputStream is) {
		throw new org.omg.CORBA.NO_IMPLEMENT();
	}

	public org.omg.CORBA.Policy get_policy(org.omg.CORBA.Object self,
			int policy_type) {
		throw new org.omg.CORBA.NO_IMPLEMENT();
	}

	public org.omg.CORBA.DomainManager[] get_domain_managers(
			org.omg.CORBA.Object self) {
		throw new org.omg.CORBA.NO_IMPLEMENT();
	}

	public org.omg.CORBA.Object set_policy_override(org.omg.CORBA.Object self,
			org.omg.CORBA.Policy[] policies,
			org.omg.CORBA.SetOverrideType set_add) {
		throw new org.omg.CORBA.NO_IMPLEMENT();
	}

	public org.omg.CORBA.ORB orb(org.omg.CORBA.Object self) {
		throw new org.omg.CORBA.NO_IMPLEMENT();
	}

	public boolean is_local(org.omg.CORBA.Object self) {
		return false;
	}

	public ServantObject servant_preinvoke(org.omg.CORBA.Object self,
			String operation, Class expectedType) {
		return null;
	}

	public void servant_postinvoke(org.omg.CORBA.Object self,
			ServantObject servant) {
	}

	public String toString(org.omg.CORBA.Object self) {
		return self.getClass().getName() + ":" + this.toString();
	}

	public int hashCode(org.omg.CORBA.Object self) {
		return System.identityHashCode(self);
	}

	public boolean equals(org.omg.CORBA.Object self, java.lang.Object obj) {
		return (self == obj);
	}
}
